iT邦幫忙

2022 iThome 鐵人賽

DAY 24
0
自我挑戰組

iOS Junior的菜雞之路系列 第 24

畫面圖案大師 UIBeizerPath

  • 分享至 

  • xImage
  •  

今天要做的是記錄電影的功能,用於記錄目前所看過的電影,目前想要看的待播清單

先分享我的Xib所呈現的樣子

但我想呈現的情況其實是

那麼這時我需要的是一個三角形的圖形來幫助我呈現
所以我使用UIBeizerPath來處理這個情況

UIBezierPath可以用來畫一些圖形
使用UIBezierPath處理我這個情況其實很簡單
先在Cell內建立setupUI的func

func setupUI() {
        let path = UIBezierPath()
        // 建立起點
        path.move(to: CGPoint(x: 0, y: 164))
        // 建立路線1
        path.addLine(to: CGPoint(x: 250, y: 164))
        // 建立路線2
        path.addLine(to: CGPoint(x: 250, y: 0))
        let triangleLayer = CAShapeLayer()
        triangleLayer.path = path.cgPath
        triangleLayer.opacity = 0.5
        maskForView.backgroundColor = .black
        maskForView.layer.mask = triangleLayer
}

使用上述的程式碼會產生跟圖片上面相符的倒三角形,再使用configure去建立你的Cell,去處理照片要放哪一張就可以了

再處理CheckButton的問題,主要也是用兩個圖案去處理,定義不同狀況的情形實作

// RecordTableViewCell.swift
    func configure(isSelected: Bool) {
        if isSelected {
            iconImageView.image = UIImage(systemName: "checkmark.circle.fill")
        } else {
            iconImageView.image = UIImage(systemName: "circle")
        }
    }

    func didTapCell(isSelected: Bool) {
        let checkStatus: Bool = !isSelected
        configure(isSelected: checkStatus)
    }
// RecordTableViewController.swift
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let data = viewModel.data[indexPath.row]
        let cell: RecordTableViewCell = tableView.makeCell(indexPath: indexPath)
        cell.configure(isSelected: data.isSelected)
        return cell
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        var data = viewModel.data[indexPath.row]
        let cell: RecordTableViewCell = tableView.makeCell(indexPath: indexPath)
        cell.didTapCell(isSelected: data.isSelected)
        viewModel.data[indexPath.row].isSelected = !data.isSelected
        tableView.reloadData()
    }

這樣其實就可以實現Button點按不同的邏輯


上一篇
為了讓大家都能理解我 BDD 行為驅動開發
下一篇
LocalAuthentication 本地驗證Handler
系列文
iOS Junior的菜雞之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言